package ch2.sq;

public class Exam2_5 {
    public static void Delsame(SqListClass<Integer> L) {    //例2.5的算法
        int k = 1; // k用于记录不重复值的个数，因为第1个数肯定会保留，所以k从1开始
        for (int i = 1; i < L.size(); i++) {
            if (L.GetElem(i) != L.GetElem(k - 1))   {   //将不相邻重复的元素插入
                L.SetElem(k, L.GetElem(i));
                k++;
            }
        }
        L.Setsize(k);   //重置长度
    }

    public static void main(String[] args) {
        // 测试1
        // 1. 创建顺序表对象L1
        SqListClass<Integer> L1 = new SqListClass<>();
        // 2. 使用对象数组创建顺序表
        Integer[] a = {1, 2, 2, 2, 1};
        //Integer[] a = {1, 1, 1, 2, 1, 1, 1, 2, 2};
        L1.CreateList(a);
        System.out.println("L1: " + L1);
        // 3. 删除顺序表中重复的元素
        System.out.println("删除所有相邻重复的元素");
        Exam2_5.Delsame(L1);
        System.out.println("L1: " + L1);

        //测试2
        Integer[] b = {1, 1, 1, 2, 1, 1, 1, 2, 2};
        SqListClass<Integer> L2 = new SqListClass<>();
        L2.CreateList(b);
        System.out.println("L2: " + L2);
        System.out.println("删除所有相邻重复的元素");
        Delsame(L2);
        System.out.println("L2: " + L2);
    }
} 
